package Vista;

import javax.swing.JComponent;
import javax.swing.JFrame;

import Vista.TransformadorDePosciones.TransformadorPosicionActual;
import Vista.TransformadorDePosciones.TransformadorPosicionDeAbajo;
import Vista.TransformadorDePosciones.TransformadorPosicionDeArriba;
import Vista.TransformadorDePosciones.TransformadorPosicionDerecha;
import Vista.TransformadorDePosciones.TransformadorPosicionIzquierda;

import GPSChallenge.Calle;
import GPSChallenge.Ciudad;
import GPSChallenge.Cruce;
import GPSChallenge.movimiento.Posicion;

public class VistaCruce {
	
	public void dibujar(JFrame frame,Cruce cruce){
		
		TransformadorPosicionDeAbajo tpda = new TransformadorPosicionDeAbajo();
		//TransformadorPosicionDeArriba tpa = new TransformadorPosicionDeArriba();
		TransformadorPosicionDerecha tpd = new TransformadorPosicionDerecha();
		//TransformadorPosicionIzquierda tpi = new TransformadorPosicionIzquierda();
		
		VistaCalle vCalle = new VistaCalle();
		
		//dibuja la calle de abajo
		Calle cAba = cruce.getCalleAbajo();
		if(cAba != null){
			vCalle.dibujar(frame, cAba, cruce.obtenerPosicion(), tpda);
		}
		
		// dibuja la calle de arriba
		/*Calle cArr = cruce.getCalleArriba();
		if(cArr != null){
			vCalle.dibujar(frame, cArr, cruce.obtenerPosicion(), tpa);
		}*/
		
		// dibuja la calle de la derecha
		Calle cDer = cruce.getCalleDerecha();
		if(cDer != null){
			vCalle.dibujar(frame, cDer, cruce.obtenerPosicion(), tpd);
		}
		
		//dibuja la calle de la izquierda
		/*Calle cIzq = cruce.getCalleIzquierda();
		if(cIzq != null){
			vCalle.dibujar(frame, cIzq, cruce.obtenerPosicion(), tpi);
		}*/
		
		
		VistaBandera vBandera = new VistaBandera();
		
		// dibuja la bandera que hay en el cruce
		
		TransformadorPosicionActual posActual = new TransformadorPosicionActual();
		vBandera.dibujar(frame, cruce.getBandera() , posActual.transformar(cruce.obtenerPosicion()));
	}
	
	public void actualizarCalleDerecha(JFrame frame, Ciudad city, Posicion pos){
		
		TransformadorPosicionDerecha tpd = new TransformadorPosicionDerecha();
		Posicion posTransformada = tpd.transformar(pos);
		
		posTransformada = tpd.mover(posTransformada);
		int posX = posTransformada.obtenerCoordenadaX();
		int posY = posTransformada.obtenerCoordenadaY();
		
		JComponent button = (JComponent) frame.getContentPane().getComponentAt(posX, posY);
		if (button != null) frame.getContentPane().remove(button);		
		
		
		
	}
	
	public void actualizarCalleIzquierda(JFrame frame, Ciudad city, Posicion pos){
		
		TransformadorPosicionIzquierda tpi = new TransformadorPosicionIzquierda();
		Posicion posTransformada = tpi.transformar(pos);
		
		int posX = posTransformada.obtenerCoordenadaX();
		int posY = posTransformada.obtenerCoordenadaY();
		
		JComponent button = (JComponent) frame.getContentPane().getComponentAt(posX, posY);
		if (button != null) frame.getContentPane().remove(button);
		
		
		
	}
	
	public void actualizarCalleDeArriba(JFrame frame, Ciudad city, Posicion pos){
		
		TransformadorPosicionDeArriba tpa = new TransformadorPosicionDeArriba();
		Posicion posTransformada = tpa.transformar(pos);
		
		int posX = posTransformada.obtenerCoordenadaX();
		int posY = posTransformada.obtenerCoordenadaY();
		
		JComponent button = (JComponent) frame.getContentPane().getComponentAt(posX, posY);
		frame.getContentPane().remove(button);
	}
	
	public void actualizarCalleDeAbajo(JFrame frame, Ciudad city, Posicion pos){
		
		TransformadorPosicionDeAbajo tpa = new TransformadorPosicionDeAbajo();
		Posicion posTransformada = tpa.transformar(pos);
		posTransformada = tpa.mover(posTransformada);
		
		int posX = posTransformada.obtenerCoordenadaX();
		int posY = posTransformada.obtenerCoordenadaY();
		JComponent button = (JComponent) frame.getContentPane().getComponentAt(posX, posY);
		if (button != null) frame.getContentPane().remove(button);		
	
	}

}
